package net.realsee.service.wcs.intf;

import com.baomidou.mybatisplus.extension.service.IService;
import net.realsee.domain.wcs.intf.WcsIntf;
import net.realsee.domain.wcs.intf.WcsIntfInlog;
import net.realsee.domain.wcs.intf.bo.InterfaceResponse;
import net.realsee.domain.wcs.intf.bo.WcsIntfInlogBo;
import net.realsee.domain.wcs.intf.vo.WcsIntfInlogVo;
import net.realsee.framework.core.domain.PageQuery;
import net.realsee.framework.core.page.TableDataInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.Collection;
import java.util.List;

/**
 * Inbound接口日志Service接口
 *
 * @author realsee
 * @date 2023-08-11
 */
public interface IWcsIntfInlogService extends IService<WcsIntfInlog> {

    /**
     * 查询Inbound接口日志
     */
    WcsIntfInlogVo selectVoById(Long id);

    /**
     * 查询Inbound接口日志列表
     */
    TableDataInfo<WcsIntfInlogVo> selectVoPage(WcsIntfInlogBo bo, PageQuery pageQuery);

    /**
     * 查询Inbound接口日志列表
     */
    List<WcsIntfInlogVo> selectVoList(WcsIntfInlogBo bo);

    /**
     * 新增Inbound接口日志
     */
    Boolean insertByBo(WcsIntfInlogBo bo);

    /**
     * 修改Inbound接口日志
     */
    Boolean updateByBo(WcsIntfInlogBo bo);

    /**
     * 校验并批量删除Inbound接口日志信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 新增Inbound接口日志
     */
    WcsIntfInlog insertByRequest(HttpServletRequest request, WcsIntf intf);

    /**
     * 修改Inbound接口日志
     */
    WcsIntfInlog updateByResponse(InterfaceResponse response);

    /**
     * 删除线程中 日志记录ID变量
     * 注意：ThreadLocal存在内存泄漏问题，使用后需要及时删除
     */
    void removeLogIdThreadLocal();

    /**
     * 接口重试
     */
    Boolean retry(WcsIntfInlogBo bo);
}
